From 759a397234bd884323cf4067472af15dfab426cc Mon Sep 17 00:00:00 2001 From: robertl Date: Fri, 7 Feb 2003 17:22:09 +0000 Subject: [PATCH] Fix from Alex to deal with how I broke his code merging the new option handlers. --- defs.h | 1 + duplicate.c | 5 ++--- filter_vecs.c | 32 +++++++++++++++++++++++--------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/defs.h b/defs.h index c63bbac1d..6a87684e6 100644 --- a/defs.h +++ b/defs.h @@ -227,6 +227,7 @@ typedef struct filter_vecs { filter_init f_init; filter_process f_process; filter_deinit f_deinit; + arglist_t *args; } filter_vecs_t; void waypt_init(void); diff --git a/duplicate.c b/duplicate.c index 5b53acc2a..6626e24d6 100644 --- a/duplicate.c +++ b/duplicate.c @@ -193,8 +193,6 @@ duplicate_process(void) void duplicate_init(const char *args) { - const char *p; - duplicate_shortname = snopt != NULL; duplicate_location = lcopt != NULL; } @@ -207,5 +205,6 @@ duplicate_deinit(void) filter_vecs_t duplicate_vecs = { duplicate_init, duplicate_process, - duplicate_deinit + duplicate_deinit, + dup_args }; diff --git a/filter_vecs.c b/filter_vecs.c index f4c0c2ed4..e01ef8b07 100644 --- a/filter_vecs.c +++ b/filter_vecs.c @@ -58,16 +58,30 @@ find_filter_vec(char *const vecname, char **opts) char *svecname = strtok(v, ","); while (vec->vec) { - if (strcmp(svecname, vec->name) == 0) { - char * res = strchr(vecname, ','); - if (res) - *opts = strchr(vecname, ',')+1; - else - *opts = NULL; - free(v); - return vec->vec; + arglist_t *ap; + char *res; + + if (strcmp(svecname, vec->name)) { + vec++; + continue; } - vec++; + + res = strchr(vecname, ','); + if (res) { + *opts = strchr(vecname, ',')+1; + + if (vec->vec->args) { + for (ap = vec->vec->args; ap->argstring; ap++){ + *ap->argval = get_option(*opts, ap->argstring); + } + } + } else { + *opts = NULL; + } + + free(v); + return vec->vec; + } free(v); return NULL; -- 2.30.2